package com.fsl.springbootdesignpattern.f_strategy;

import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;

public class Test {

    public static void main(String[] args) {

        //我们自定义的策略模式
        Context context = new Context();

        Strategy strategy1 = new AddStrategy();

        context.setStrategy(strategy1);

        System.out.println(context.executeStrategy(10, 5));

        Strategy strategy2 = new multiplyStrategy();

        context.setStrategy(strategy2);

        System.out.println(context.executeStrategy(10, 5));

        Strategy strategy3 = new SubtractStrategy();

        context.setStrategy(strategy3);

        System.out.println(context.executeStrategy(10, 5));

        /**
         * 例如list排序就是使用的策略模式，也就是说：
         * 我们的开始都是一个集合，结果都是排序
         * 但是，针对不同的集合，我们有各种排序的策略，这就是策略模式
         */
        List<Integer> list = new ArrayList<>();

        Collections.sort(list, new Comparator<Integer>() {
            @Override
            public int compare(Integer o1, Integer o2) {
                return 0;
            }
        });
    }
}
